Automated face detection is a form of machine-implemented visual object detection used to locate faces in a digital image. Detecting faces in images has been used in a variety fields including biometrics, neuroscience and psychology. Additionally, face detection is currently being used in many consumer applications such as video surveillance systems, digital cameras for use with auto-focusing operations, tagging pictures on social networking websites, etc.
A first conventional face detection algorithm applies classifiers to various portions of an image until a face is detected. The size of the classifier is varied and applied to the image again to detect faces in the image of different sizes. This conventional solution requires many operations, and consequently, is not speed optimized when run on a graphics processing unit (GPU). Additionally, this conventional solution decreases the localization of processed data as the classifier scale or size is increased, thereby decreasing efficiency when processed using a GPU which can more efficiently process localized data.
A second conventional face detection algorithm involves downscaling the image to create multiple images which are smaller in size than the original image. An integral image for each of the downscaled images is then created, where classifiers are then applied to each of the integral images. Although this conventional solution is more efficient than the first conventional solution, it remains relatively inefficient since integral image calculations are computationally-intensive and this conventional solution requires a separate integral image calculation for each downscaled image.
A third conventional face detection algorithm involves calculating the integral image of an image. Classifiers of different scales are then applied to the integral image to detect faces in the image. Although this conventional solution is more efficient than the above-described first and second conventional solutions, it remains relatively inefficient since the localization of the processed data decreases as the classifier scale or size is increased, thereby decreasing efficiency when processed using a GPU which can more efficiently process localized data.